﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////

#pragma once
#include "GmepModelInterface.h"
#include "IMepInstanceType.h"
#include "RegenDataId.h"

namespace gmep
{
    enum class DevicePartType;

    class GMEP_MODEL_INTERFACE_EXPORT IMepDeviceType : public IMepInstanceType
    {
        DEFINE_CAST_DERIVED(gmep::IMepDeviceType, gmep::IMepInstanceType)
    public:
        /// \brief 析构函数
        virtual ~IMepDeviceType() {}

    public:
        /// \brief 创建机电设备类型指针
        /// 
        ///会在gcmp平台构件类型指针中挂接上机电数据
        /// \param pIntanceType gcmp平台构件类型指针
        /// \return 机电设备类型指针
        static IMepDeviceType *Create(gcmp::IInstanceType *pIntanceType);

        /// \brief 获取机电设备类型
        /// \return 机电设备类型
        virtual DevicePartType GetDevicePartType() const = 0;

        /// \brief 标记tag更新RdId
        virtual void MarkTypeParameterUpdateRdId() = 0;

        /// \brief 定义TypeParameterUpdateRdId的Get函数
        virtual RegenDataId GetTypeParameterUpdateRdId()const = 0;
    };
}
